package com.ruoyi.app.util;

import lombok.extern.slf4j.Slf4j;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;

/**
 * 解压工具
 * @author cyh
 * @date 2022/5/19 2:28 下午
 */
@Slf4j
public class CompressUtils {

    public static String unCompress(String str) {
        if (null == str || str.length() <= 0) {
            return str;
        }
        // 建立一个新的输出流
        try {
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            // 建立一个 ByteArrayInputStream，使用 buf 做为其缓冲区数组
            ByteArrayInputStream in = new ByteArrayInputStream(str.getBytes("ISO-8859-1"));
            // 使用默认缓冲区大小建立新的输入流
            GZIPInputStream gzip = new GZIPInputStream(in);
            byte[] buffer = new byte[256];
            int n;

            // 将未压缩数据读入字节数组
            while ((n = gzip.read(buffer)) >= 0) {
                out.write(buffer, 0, n);
            }
            // 使用指定的 charsetName，经过解码字节将缓冲区内容转换为字符串
            str = out.toString("utf-8");
            out.close();
        }catch (Exception e){
            log.error("解压异常",e);
        }

        return str;
    }

}
